﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using TTQT;
using TTQT.TTQT_Code;
using MyWebUtils;
using System.IO;

public partial class SanPham : MasterControl//System.Web.UI.UserControl
{
    //private void bindAnChi()
    //{
    //    dsMaAnChi.SelectCommandType = SqlDataSourceCommandType.Text;
    //    dsMaAnChi.SelectCommand =
    //        "select distinct Ma,tenanchi+ case(AnChiMau) when 1 then N' (mẫu)' when 0 then '' end [TenAnChi] from maanchi where MaDotPhatHanh=" +
    //        cboDotPhatHanh.SelectedValue;
    //    cboMaAnChi.DataSource = ((DataView)dsMaAnChi.Select(new DataSourceSelectArguments())).ToTable();
    //    cboMaAnChi.DataBind();
    //}

    private void bindDetail()
    {

    }

    SanPhamDAO sp = new SanPhamDAO();
    private void bindCbo()
    {
        CommonDAO dao = new CommonDAO();
        DataTable parent = dao.queryForTable("sanPham_NhomGetForSearchParent", "s");
        cboParent.DataSource = parent;
        cboParent.DataBind();

        cboParent0.DataSource = parent;
        cboParent0.DataBind();

        DataTable tblLoai = dao.queryForTable("sanpham_loaiGetForSearch", "s");
        cboLoai.DataSource = tblLoai;
        cboLoai.DataBind();

        cboLoai0.DataSource = tblLoai;
        cboLoai0.DataBind();

        cboGia.DataSource = dao.queryForTable("SanPham_KhoangGiaSearch_Getall", "s");
        cboGia.DataBind();

        cboNoiSX0.DataSource = dao.queryForTable("sanpham_noisx_getAll","s");
        cboNoiSX0.DataBind();

        cboParent_SelectedIndexChanged(null, null);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            txtChietKhau.Attributes.Add("onkeyup", "ckLostFocus();");
            txtChietKhau.Attributes.Add("ondblclick", "selectText(this)");

            txtGiaBanCoChietKhau.Attributes.Add("onkeyup", "gbLostFocus();");
            txtGiaBanCoChietKhau.Attributes.Add("ondblclick", "selectText(this)");
            lblId.Text = "";
            bindCbo();
            cmdSearch_Click(null, null);
            visiblePane(true, false);
            txtGiaBanThamKhao.Attributes.Add("onkeyup", "formatTien(" + txtGiaBanThamKhao.ClientID + ");");
            txtGiaBanThamKhao.Attributes.Add("ondblclick", "selectText(this)");
        }
    }
    protected void detailGrid_ItemCommand(object source, DataGridCommandEventArgs e)
    {
        MyWebUtil.goToElement(Page, "chiTietHoaDon");
        SanPhamDAO sp = new SanPhamDAO();
        try
        {
            if (e.CommandName == "cmdDelete")
            {
                sp.id = e.Item.Cells[0].Text;
                sp.getById();
                if (sp.delete() > 0)
                {
                    visiblePane(true, false);
                    try
                    {
                        //string path = sp.picUrl.Substring(2);
                        File.Delete(Server.MapPath(sp.picUrl));
                    }
                    catch (Exception ex) { }
                    cmdSearch_Click(null, null);
                }
            }
            if (e.CommandName == "cmdEdit")
            {
                
                lblId.Text = e.Item.Cells[0].Text;
                sp.id = e.Item.Cells[0].Text;
                sp.getById();
                try
                {
                    cboParent0.SelectedValue = sp.parentId;
                }
                catch (Exception)
                {

                }

                chkHangMoi.Checked = sp.hangMoi.Equals("1") ? true : false;
                chkSPHot.Checked = sp.spHot.Equals("1") ? true : false;
                chkBanChay.Checked = sp.banChay.Equals("1") ? true : false;
                chkConHang.Checked = sp.conHang.Equals("1") ? true : false;
                fckThongSo.Value = sp.thongSo;
                txtQuaTang.Text = sp.quaTang;
                txtChietKhau.Text = TTQTCommon.formatTien_KhongThapPhan(sp.ChietKhau);
                txtGiaBanCoChietKhau.Text = TTQTCommon.ToStringCurrency(sp.GiaBanCoChietKhau);
                

                try
                {
                    cboGroup0.SelectedValue = sp.nhomId;
                }
                catch (Exception exx) { }
                try
                {
                    cboLoai0.SelectedValue = sp.loaiId;
                }
                catch (Exception exx) { }
                try
                {
                    cboNoiSX0.SelectedValue = sp.NoiSxid;
                }
                catch (Exception exx) { }

                txtSeri.Text = sp.seri;
                txtTenHang.Text = sp.tenHang;
                txtGiaBanThamKhao.Text = TTQTCommon.ToStringCurrency(sp.GiaBanThamKhao);
                if (!string.IsNullOrEmpty(sp.picUrl))
                {
                    imgUpload.ImageUrl = "../" + sp.picUrl;
                    lblPathAnh.Text = sp.picUrl;
                    imgUpload.Visible = true;
                    //lblPathAnh.Visible = true;
                    cmdXoaAnh.Visible = true;
                }
                txtTomLuoc.Text = sp.tomLuoc;
                fck.Value = sp.noiDung;
                
                
                visiblePane(false, true);
            }
            CommonDAO dao=new CommonDAO();
            if (e.CommandName.Equals("cmdNew"))
            {
                dao.SanPham_ToggleColumnValue("HangMoi", e.Item.Cells[0].Text, e.Item.Cells[10].Text);
                cmdSearch_Click(null, null);
            }
            if (e.CommandName.Equals("cmdHot"))
            {
                dao.SanPham_ToggleColumnValue("spHot", e.Item.Cells[0].Text, e.Item.Cells[11].Text);
                cmdSearch_Click(null, null);
            }
            if (e.CommandName.Equals("cmdBanChay"))
            {
                dao.SanPham_ToggleColumnValue("BanChay", e.Item.Cells[0].Text, e.Item.Cells[12].Text);
                cmdSearch_Click(null, null);
            }
            if (e.CommandName.Equals("cmdConHang"))
            {
                dao.SanPham_ToggleColumnValue("conHang", e.Item.Cells[0].Text, e.Item.Cells[13].Text);
                cmdSearch_Click(null, null);
            }
        }
        catch (SqlException ex)
        {
        }
    }
    protected void detailGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemIndex < 0) return;
        try
        {
            if (e.Item.Cells[3].Text.Equals("1"))
            {
                e.Item.CssClass = "DarkRow";
            }
            else
            {
                e.Item.CssClass = "LightRow";
            }
        }
        catch { }
        try
        {
            ImageButton cmdLock = (ImageButton)e.Item.FindControl("cmdNew");
            if (null != cmdLock)
            {
                if (e.Item.Cells[10].Text.Equals("0"))
                {
                    cmdLock.ImageUrl = "../images/active0.png";
                }
                if (e.Item.Cells[10].Text.Equals("1"))
                {
                    cmdLock.ImageUrl = "../images/active1.png";
                }
            }
        }
        catch (Exception exx)
        {

        }
        try
        {
            ImageButton hot = (ImageButton)e.Item.FindControl("cmdHot");
            if (null != hot)
            {
                if (e.Item.Cells[11].Text.Equals("0"))
                {
                    hot.ImageUrl = "../images/active0.png";
                }
                if (e.Item.Cells[11].Text.Equals("1"))
                {
                    hot.ImageUrl = "../images/active1.png";
                }
            }
        }
        catch (Exception exx)
        {

        }
        try
        {
            ImageButton banChay = (ImageButton)e.Item.FindControl("cmdBanChay");
            if (null != banChay)
            {
                if (e.Item.Cells[12].Text.Equals("0"))
                {
                    banChay.ImageUrl = "../images/active0.png";
                }
                if (e.Item.Cells[12].Text.Equals("1"))
                {
                    banChay.ImageUrl = "../images/active1.png";
                }
            }
        }
        catch (Exception exx)
        {

        }
        try
        {
            ImageButton conHang = (ImageButton)e.Item.FindControl("cmdConHang");
            if (null != conHang)
            {
                if (e.Item.Cells[13].Text.Equals("0"))
                {
                    conHang.ImageUrl = "../images/active0.png";
                }
                if (e.Item.Cells[13].Text.Equals("1"))
                {
                    conHang.ImageUrl = "../images/active1.png";
                }
            }
        }
        catch (Exception exx)
        {

        }

    }
    protected void detailGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        detailGrid.CurrentPageIndex = e.NewPageIndex;
        bindDetail();
    }

    private bool kiemTraLoiNhapDetail()
    {
        // Kiểm tra lỗi nhập trên phần Detail
        decimal giaNhap, giaBan;
        //try
        //{
        //    DateTime d = Convert.ToDateTime("");
        //}
        //catch
        //{
        //    MyWebUtils.MyWebUtil.alert(Page, "Ngày nhập sai định dạng");
        //    return false;
        //}
        if (cboGroup0.SelectedValue.Equals("-1"))
        {
            MyWebUtil.alert(Page, "Chưa chọn dòng sản phẩm");
            return false;
        }
        if (txtTenHang.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua nhap ten hang");
            return false;
        }

        if (txtSeri.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua chon Seri (ma hang)");
            return false;
        }
        // giá nhập

        // giá ban
        if (txtGiaBanThamKhao.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua nhap gia ban");
            return false;
        }
        try
        {
            giaBan = Convert.ToDecimal(txtGiaBanThamKhao.Text.Replace(",", ""));
            if (giaBan < 0)
            {
                MyWebUtil.alert(Page, "Gia ban khong hop le");
                return false;
            }
        }
        catch
        {
            MyWebUtil.alert(Page, "Gia ban khong hop le");
            return false;
        }

        //Xong phần kiểm tra lỗi nhập thông tin Detail
        #region Kiểm tra xem có bị trùng seri không.

        //Kiểm tra trạng thái trong database. Chỗ này phức tạp nhất
        //Mô tả quá trình tìm kiếm:
        ///Phải kiêm tra 2 trường hợp: Mã ấy có tồn tại không? Và ấn chỉ ấy có đúng là trạng thái = 1 không? Nếu không thỏa cả 2 điều kiện trên thì báo lỗi và dừng lại.
        /*  */
        if (txtSeri.Text.Trim().Length <= 0)
        {
            SqlConnection conn = new SqlConnection(TTQTCommon.DBConnectionString);
            SqlCommand comm = new SqlCommand();
            comm.Connection = conn;
            comm.CommandType = CommandType.StoredProcedure;
            comm.CommandText = "SanPham_KiemTraTonTaiSeri";
            bool isExist = false;
            try
            {
                conn.Open();

                comm.Parameters.Clear();
                //Kiểm tra trung bảng khoanchi_khaibaodauky
                //comm.Parameters.AddWithValue("@macn", UserInfo.MaKho);
                comm.Parameters.AddWithValue("@Seri", txtSeri.Text);
                string s = Convert.ToString(comm.ExecuteScalar());
                if (s != "0") isExist = true;
                if (isExist)
                {
                    MyWebUtil.alert(Page, "Mã hàng này đã tồn tại. Hãy nhập lại mã khác!");
                    return false;
                }
                //MyWebUtils.MyWebUtil.alert(Page, "Kết quả là: " + ketQua);
                conn.Close();
                comm.Dispose();

            }
            catch (Exception ex)
            {
                MyWebUtils.MyWebUtil.alert(Page, "Co loi khi kiem tra trung seri!");
                return false;
            }
        }

        #endregion

        return true;
    }
    private void insertDetail()
    {
        sp = new SanPhamDAO();
        sp.nhomId = cboGroup0.SelectedValue;
        sp.loaiId = cboLoai0.SelectedValue;
        sp.seri = txtSeri.Text;
        sp.tenHang = txtTenHang.Text;
        sp.GiaBanThamKhao = txtGiaBanThamKhao.Text.Replace(",", "");
        sp.picUrl = lblPathAnh.Text;
        sp.tomLuoc = txtTomLuoc.Text;
        sp.noiDung = fck.Value;
        sp.userName = UserInfo.userName;
        sp.parentId = cboParent0.SelectedValue;
        sp.hangMoi = chkHangMoi.Checked ? "1" : "0";
        sp.spHot = chkSPHot.Checked ? "1" : "0";
        sp.banChay = chkBanChay.Checked ? "1" : "0";
        sp.conHang = chkConHang.Checked ? "1" : "0";
        sp.thongSo = fckThongSo.Value;
        sp.quaTang = txtQuaTang.Text;
        sp.ChietKhau = txtChietKhau.Text.Replace(",", "");
        sp.NoiSxid = cboNoiSX0.SelectedValue;
        sp.GiaBanCoChietKhau = txtGiaBanCoChietKhau.Text.Replace(",", "");
        if (sp.insert() > 0)
        {
            bindDetail();
            visiblePane(true, false);
            lblId.Text = sp.id;
            imgUpload.ImageUrl = "";
            lblPathAnh.Text = "";
        }
        else
        {
            MyWebUtil.alert(this.Page, "Thêm xong");
        }
    }

    protected void cmdCapNhatDetail_Click(object sender, EventArgs e)
    {
        MyWebUtil.goToElement(Page, "chiTietHoaDon");
        if (!kiemTraLoiNhapDetail()) return;
        // Nếu đang ở chế độ thêm mới detail Sử dụng transaction để insert Detail và đổi trạng thái các ấn chỉ trong bảng KhoAnChi
        if (lblId.Text.Equals(""))
        {
            insertDetail();
            lblId.Text = "";
        }
        else
        {
            SanPhamDAO sp = new SanPhamDAO();
            sp.GiaBanThamKhao = txtGiaBanThamKhao.Text.Replace(",", "");
            sp.id = lblId.Text;
            sp.parentId = cboParent0.SelectedValue;
            sp.loaiId = cboLoai0.SelectedValue;
            sp.nhomId = cboGroup0.SelectedValue;
            sp.noiDung = fck.Value;
            sp.picUrl = lblPathAnh.Text;
            sp.seri = txtSeri.Text;
            sp.tenHang = txtTenHang.Text;
            sp.tomLuoc = txtTomLuoc.Text;
            sp.userName = UserInfo.userName;
            sp.hangMoi = chkHangMoi.Checked ? "1" : "0";
            sp.spHot = chkSPHot.Checked ? "1" : "0";
            sp.banChay = chkBanChay.Checked ? "1" : "0";
            sp.conHang = chkConHang.Checked ? "1" : "0";
            sp.thongSo = fckThongSo.Value;
            sp.quaTang = txtQuaTang.Text;
            sp.ChietKhau = txtChietKhau.Text.Replace(",", "");
            sp.NoiSxid = cboNoiSX0.SelectedValue;
            sp.GiaBanCoChietKhau = txtGiaBanCoChietKhau.Text.Replace(",", "");
            if (sp.update() > 0)
            {
                cmdSearch_Click(null, null);
                lblId.Text = "";
                lblPathAnh.Text = "";
                imgUpload.ImageUrl = "";
            }
        }
        visiblePane(true, false);
        cmdSearch_Click(null, null);
        //hienPanel(false, false, true, false);
    }
    protected void cmdHuyBoDetail_Click(object sender, EventArgs e)
    {
        visiblePane(true, false);
    }
    protected void cboParent_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboParent0.SelectedValue = cboParent.SelectedValue;
        if (cboParent.SelectedValue == "-1")
        {
            CommonDAO dao = new CommonDAO();
            DataTable tbl = dao.sanPham_Nhom_getAllGroup();
            cboGroup.DataSource = tbl;
            cboGroup.DataBind();
            cboGroup0.DataSource = tbl;
            cboGroup0.DataBind();
        }
        else
        {
            CommonDAO dao = new CommonDAO();

            cboGroup.DataSource = dao.sanPham_NhomGetForSearchNhom(cboParent.SelectedValue);
            cboGroup.DataBind();
            cboGroup0.DataSource = cboGroup.DataSource;
            cboGroup0.DataBind();
        }
        cmdSearch_Click(null, null);
    }
    protected void cboParent0_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboParent.SelectedValue = cboParent0.SelectedValue;
        if (cboParent.SelectedValue == "-1")
        {
            CommonDAO dao = new CommonDAO();
            cboGroup.DataSource = dao.sanPham_Nhom_getAllGroup();
            cboGroup.DataBind();
            cboGroup0.DataSource = cboGroup.DataSource;
            cboGroup0.DataBind();
        }
        else
        {
            CommonDAO dao = new CommonDAO();
            cboGroup.DataSource = dao.sanPham_NhomGetForSearchNhom(cboParent.SelectedValue);
            cboGroup.DataBind();
            cboGroup0.DataSource = cboGroup.DataSource;
            cboGroup0.DataBind();
        }
        cmdSearch_Click(null, null);
    }
    protected void cmdSearch_Click(object sender, EventArgs e)
    {
        detailGrid.DataSource = sp.timKiem(txtTuKhoa.Text, cboGroup.SelectedValue, cboLoai.SelectedValue, cboGia.SelectedValue);
        detailGrid.DataBind();
    }
    protected void cmdAddDetail_Click(object sender, EventArgs e)
    {
        visiblePane(false, true);
        chkConHang.Checked = true;
        chkHangMoi.Checked = true;
        lblId.Text = "";
        try
        {
            CommonDAO cm = new CommonDAO();
            fckThongSo.Value = cm.chayCauSQLScalarString("select ThongSoSanPham from ThongSoSanPham");
        }
        catch {}
    }
    private void visiblePane(bool grid, bool edit)
    {
        pnGridDetail.Visible = grid;
        pnEditDetail.Visible = edit;
    }
    protected void cmdUpload_Click(object sender, EventArgs e)
    {
        if (!anh.HasFile)
        {
            MyWebUtil.alert(this.Page, "Bạn chưa chọn file");
            return;
        }
        string thuMuc = Server.MapPath("../img/image/sanpham");
        string fileName = anh.FileName;
        if (fileName.ToLower().EndsWith(".jpg") || fileName.ToLower().EndsWith(".bmp") || fileName.ToLower().EndsWith(".gif") || fileName.ToLower().EndsWith(".png") || fileName.ToLower().EndsWith(".jpeg"))
        {
            //if (File.Exists(thuMuc + "/" + fileName))
            //{
            //    MyWebUtil.alert(this.Page, "File này đã tồn tại. Bạn vui lòng chọn file khác hoặc đổi tên file!");
            //    return;
            //}
            anh.SaveAs(thuMuc + "\\" + fileName);
            anh.Dispose();


            //sinh anh thumb
            string tenAnhThumb = "";
            string[] temp = fileName.Split('.');
            tenAnhThumb = temp[0] + "_s." + temp[1];
            XuLyAnh.createThumbImage(thuMuc + "/" + fileName, thuMuc + "/" + tenAnhThumb, 500);

            lblPathAnh.Text = "../img/image/sanpham/" + tenAnhThumb;
            imgUpload.ImageUrl = "../" + lblPathAnh.Text;
        }
        else
        {
            MyWebUtil.alert(this.Page, "Chỉ chấp nhận các ảnh có định dạng jpg,bmp,gif,png");
            return;
        }
    }
    protected void cmdXoaAnh_Click(object sender, EventArgs e)
    {
        try
        {
            File.Delete(Server.MapPath(lblPathAnh.Text));
            try
            {
                File.Delete(Server.MapPath(lblPathAnh.Text.Replace("_s", "")));
            }
            catch { }
            lblPathAnh.Text = "";
            imgUpload.ImageUrl = "";
            cmdXoaAnh.Visible = false;
        }
        catch (Exception ex)
        {
        }
    }
    protected void cboGroup0_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboGroup.SelectedValue = cboGroup0.SelectedValue;
        cmdSearch_Click(null, null);
    }
    protected void cboGroup_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboGroup0.SelectedValue = cboGroup.SelectedValue;
        cmdSearch_Click(null, null);
    }
    protected void cboLoai0_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboLoai.SelectedValue = cboLoai0.SelectedValue;
    }
    protected void cboLoai_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboLoai0.SelectedValue = cboLoai.SelectedValue;
        cmdSearch_Click(null, null);
    }
    protected void cboGia_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}
